// 游戏平衡性配置文件
const BALANCE_CONFIG = {
    // 升级所需经验值配置
      // 每级所需经验值，-1表示使用基础公式计算
        // 10级以上使用公式计算：前一级经验 * 1.5 向上取整
    EXPERIENCE_PER_LEVEL: {
       1: 10,
        2: 50,
        3: 250,
        4: 500,
        5: 650,
        6: 800,
        7: 1200,
        8: 2000,
        9: 3200,
        10: 5000,
       
    },
    
    // 升级选择时间限制（毫秒）
    UPGRADE_SELECTION_TIME: 1000,
    
    // 武器配置
    WEAPONS: {
        // 飞刀 - 基础武器，射速快，有穿透和多重投掷效果
        [WEAPON_TYPES.KNIFE]: {
            base: {
                damage: 25,           // 伤害值
                cooldown: 300,        // 冷却时间(毫秒)
                projectileSpeed: 8,   // 弹丸速度
                range: 150,           // 攻击范围
                color: '#FFD700',     // 颜色(金色)
                maxProjectiles: 5,    // 最大弹丸数量
                projectileLifetime: 2000, // 弹丸存活时间(毫秒)
                destroyOnHit: true,   // 弹丸碰撞后是否消失
                pierceCount: 1,       // 穿透次数
                multiThrow: 2,        // 多重投掷数量
                criticalChance: 0.15, // 暴击概率15%
                criticalMultiplier: 2.0 // 暴击倍数
            },
            perLevel: {
                damage: 5,            // 每级伤害增加
                cooldown: -20,        // 每级冷却减少(负数表示减少)
                projectileSpeed: 0.5, // 每级速度增加
                range: 10,            // 每级范围增加
                pierceCount: 0.5,     // 每两级穿透次数+1
                multiThrow: 0.5,     // 每三级多重投掷+1
                criticalChance: 0.02  // 每级暴击率增加2%
            }
        },
        
        // 火球 - 中等射速，有燃烧DOT和爆炸AOE伤害
        [WEAPON_TYPES.FIREBALL]: {
            base: {
                damage: 30,           // 伤害值
                cooldown: 600,        // 冷却时间(毫秒)
                projectileSpeed: 6,   // 弹丸速度
                range: 250,           // 攻击范围
                color: '#FF4500',     // 颜色(橙红色)
                maxProjectiles: 5,    // 最大弹丸数量
                projectileLifetime: 2000, // 弹丸存活时间(毫秒)
                destroyOnHit: true,   // 碰撞后消失
                burnDamage: 8,        // 燃烧伤害每秒
                burnDuration: 3000,   // 燃烧持续时间(毫秒)
                explosionRadius: 40,  // 爆炸半径
                explosionDamage: 15   // 爆炸伤害
            },
            perLevel: {
                damage: 7,            // 每级伤害增加
                cooldown: -25,        // 每级冷却减少
                projectileSpeed: 0.4, // 每级速度增加
                range: 15,            // 每级范围增加
                burnDamage: 2,        // 每级燃烧伤害增加
                explosionRadius: 3,   // 每级爆炸半径增加
                explosionDamage: 3    // 每级爆炸伤害增加
            }
        },
        
        // 闪电 - 高射速，有连锁效果和麻痹效果
        [WEAPON_TYPES.LIGHTNING]: {
            base: {
                damage: 40,           // 伤害值
                cooldown: 800,        // 冷却时间(毫秒)
                projectileSpeed: 12,  // 弹丸速度（提高速度）
                range: 300,           // 攻击范围
                color: '#00FFFF',     // 颜色(青色)
                maxProjectiles: 5,    // 最大弹丸数量
                projectileLifetime: 2000, // 弹丸存活时间(毫秒)
                destroyOnHit: true,   // 碰撞后消失
                chainCount: 2,        // 连锁次数
                chainRange: 100,      // 连锁范围
                chainDamageReduction: 0.7, // 连锁伤害衰减（70%）
                stunChance: 0.25,     // 麻痹概率25%
                stunDuration: 1500    // 麻痹持续时间(毫秒)
            },
            perLevel: {
                damage: 10,           // 每级伤害增加
                cooldown: -30,        // 每级冷却减少
                projectileSpeed: 0.5, // 每级速度增加
                range: 20,            // 每级范围增加
                chainCount: 0.5,      // 每两级连锁次数+1
                chainRange: 10,       // 每级连锁范围增加
                stunChance: 0.03      // 每级麻痹概率增加3%
            }
        },
        
        // 冰锥 - 中等射速，有减速效果和冰冻AOE
        [WEAPON_TYPES.ICE_SHARD]: {
            base: {
                damage: 35,           // 伤害值
                cooldown: 500,        // 冷却时间(毫秒)
                projectileSpeed: 7,   // 弹丸速度
                range: 200,           // 攻击范围
                color: '#87CEEB',     // 颜色(天蓝色)
                maxProjectiles: 5,    // 最大弹丸数量
                projectileLifetime: 2000, // 弹丸存活时间(毫秒)
                destroyOnHit: true,   // 碰撞后消失
                slowEffect: 0.5,      // 减速效果（50%速度）
                slowDuration: 2000,   // 减速持续时间(毫秒)
                freezeChance: 0.15,   // 冰冻概率15%
                freezeDuration: 1000, // 冰冻持续时间(毫秒)
                shatterRadius: 30,    // 碎裂AOE半径
                shatterDamage: 10     // 碎裂AOE伤害
            },
            perLevel: {
                damage: 8,            // 每级伤害增加
                cooldown: -20,        // 每级冷却减少
                projectileSpeed: 0.5, // 每级速度增加
                range: 15,            // 每级范围增加
                slowEffect: -0.05,    // 每级减速效果增强5%
                freezeChance: 0.02,   // 每级冰冻概率增加2%
                shatterRadius: 2,     // 每级碎裂半径增加
                shatterDamage: 2      // 每级碎裂伤害增加
            }
        },
        
        // 激光 - 极高射速，高伤害，穿透效果
        [WEAPON_TYPES.LASER]: {
            base: {
                damage: 35,           // 伤害值
                cooldown: 1000,        // 冷却时间(毫秒)
                projectileSpeed: 0,   // 弹丸速度(对激光无意义)
                range: 300,           // 攻击范围(激光长度)
                color: '#FF1493',     // 颜色(深粉色)
                maxProjectiles: 2,    // 最大弹丸数量
                projectileLifetime: 2000, // 弹丸存活时间(毫秒)
                destroyOnHit: false   // 激光不会因为碰撞而消失(穿透效果)
            },
            perLevel: {
                damage: 8,            // 每级伤害增加
                cooldown: -15,        // 每级冷却减少
                range: 20             // 每级范围增加
            }
        },
        
        // 环绕弹 - 自动环绕玩家，无需目标即可触发
        [WEAPON_TYPES.ORBITAL]: {
            base: {
                damage: 15,           // 伤害值（降低基础伤害）
                cooldown: 800,        // 冷却时间(毫秒)，增加冷却时间
                projectileSpeed: 3,   // 弹丸速度（降低速度）
                range: 80,            // 攻击范围（减少范围）
                color: '#32CD32',     // 颜色(石灰绿色)
                maxProjectiles: 3,    // 最大弹丸数量（减少初始数量）
                projectileLifetime: 8000, // 弹丸存活时间(毫秒)（增加存活时间）
                destroyOnHit: true,   // 碰撞后消失
                triggerChance: 0.2,   // 触发概率（30%）
                maxActivePerSecond: 2 // 每秒最多触发次数
            },
            perLevel: {
                damage: 3,            // 每级伤害增加（降低）
                cooldown: -20,        // 每级冷却减少
                projectileSpeed: 0.2, // 每级速度增加（降低）
                range: 5,             // 每级范围增加（降低）
                maxProjectiles: 1,    // 每级最大弹丸数量增加
                triggerChance: 0.05   // 每级触发概率增加5%
            }
        },
        
        // 分身 - 召唤分身协助战斗
        [WEAPON_TYPES.CLONE]: {
            base: {
                damage: 30,           // 伤害值
                cooldown: 1000,       // 冷却时间(毫秒)
                projectileSpeed: 8,   // 弹丸速度
                range: 200,           // 攻击范围
                color: '#9370DB',     // 颜色(中紫色)
                maxProjectiles: 5,    // 最大弹丸数量
                projectileLifetime: 2000, // 弹丸存活时间(毫秒)
                destroyOnHit: true    // 碰撞后消失
            },
            perLevel: {
                damage: 6,            // 每级伤害增加
                cooldown: -40,        // 每级冷却减少
                projectileSpeed: 0.5, // 每级速度增加
                range: 15             // 每级范围增加
            }
        },
        
        // 护盾 - 环绕玩家的防护弹丸，无需目标即可触发
        [WEAPON_TYPES.SHIELD]: {
            base: {
                damage: 15,           // 伤害值
                cooldown: 1500,       // 冷却时间(毫秒)
                projectileSpeed: 3,   // 弹丸速度
                range: 150,            // 攻击范围
                color: '#FFD700',     // 颜色(金色)
                maxProjectiles: 5,    // 最大弹丸数量
                projectileLifetime: 2000, // 弹丸存活时间(毫秒)
                destroyOnHit: true    // 碰撞后消失
            },
            perLevel: {
                damage: 3,            // 每级伤害增加
                cooldown: -50,        // 每级冷却减少
                projectileSpeed: 0.2, // 每级速度增加
                range: 5,             // 每级范围增加
                maxProjectiles: 1     // 每级最大弹丸数量增加
            }
        }
    },
    
    // 敌人配置
    ENEMIES: {
        [ENEMY_TYPES.ZOMBIE]: {
            health: 50,
            damage: 10,
            speed: 1.5,
            size: 20,
            experience: 10
        },
        [ENEMY_TYPES.SKELETON]: {
            health: 30,
            damage: 15,
            speed: 2.5,
            size: 18,
            experience: 15
        },
        [ENEMY_TYPES.GHOST]: {
            health: 20,
            damage: 20,
            speed: 3.5,
            size: 15,
            experience: 20
        },
        [ENEMY_TYPES.BOSS]: {
            health: 500,
            damage: 30,
            speed: 1.0,
            size: 40,
            experience: 100
        }
    },
    
    // 小兵配置
    MINIONS: {
        base: {
            health: 800,              // 基础生命值
            damage: 15,              // 基础伤害
            speed: 3.0,              // 基础速度
            size: 12,                // 尺寸
            attackRange: 180,        // 攻击范围
            projectileSpeed: 6,      // 弹丸速度
            attackCooldown: 400,     // 攻击冷却时间
            avoidanceRadius: 100,     // 躲避半径
            groupRadius: 150,        // 抱团范围
            itemPickupRadius: 40,    // 道具拾取范围
            healingRate: 2,          // 自然恢复速度(每秒)
            maxLevel: 10             // 最大等级
        },
        perLevel: {
            health: 20,              // 每级生命值增加
            damage: 3,               // 每级伤害增加
            speed: 0.1,              // 每级速度增加
            attackRange: 10,         // 每级攻击范围增加
            projectileSpeed: 0.3,    // 每级弹丸速度增加
            attackCooldown: -50,     // 每级攻击冷却减少
            avoidanceRadius: 5,      // 每级躲避半径增加
            healingRate: 0.5         // 每级恢复速度增加
        },
        // AI行为配置
        ai: {
            flockingWeight: 0.3,     // 抱团权重
            avoidanceWeight: 0.4,    // 躲避权重
            followWeight: 0.3,       // 跟随权重
            itemSeekWeight: 0.6,     // 寻找道具权重
            dangerThreshold: 0.3,    // 危险阈值（生命值低于30%时更保守）
            groupCohesion: 150,      // 群体凝聚力范围
            maxGroupSize: 8,         // 最大群体大小
            itemPriority: {          // 道具优先级
                health: 1.0,         // 生命道具
                experience: 0.8,     // 经验道具
                weapon: 0.6          // 武器道具
            }
        }
    }
};

// 计算指定等级所需的经验值
function getExperienceForLevel(level) {
    if (BALANCE_CONFIG.EXPERIENCE_PER_LEVEL[level]) {
        return BALANCE_CONFIG.EXPERIENCE_PER_LEVEL[level];
    }
    
    // 使用公式计算10级以上的经验值
    if (level > 10) {
        let exp = BALANCE_CONFIG.EXPERIENCE_PER_LEVEL[10];
        for (let i = 11; i <= level; i++) {
            exp = Math.ceil(exp * 1.5);
        }
        return exp;
    }
    
    // 默认返回基础值
    return 100;
}

// 计算达到指定等级需要的累积经验值
function getCumulativeExperienceForLevel(level) {
    let cumulative = 0;
    for (let i = 1; i <= level; i++) {
        cumulative += getExperienceForLevel(i);
    }
    return cumulative;
}